/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ejb;

import com.entidades.Recurso;

import com.entidades.Usuario;
import com.exceptions.BancoException;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 *
 * @author JERONIMO
 */
@Stateless
public class RecursoFacade extends AbstractFacade<Recurso> {
    @PersistenceContext(unitName = "Cualquiera-ejbPU")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public RecursoFacade() {
        super(Recurso.class);
    }
    
    public void crearRecurso(Recurso recurso) throws BancoException{

       //Se verifica si el cliente ya existe;
        System.out.print("aqui salo2");
        Recurso cte = findByIdentificacion(recurso.getCodigorecurso());
        System.out.printf("aqui salo3");
        if(cte!= null){
            throw new BancoException("El codigo del Recurso " +recurso.getCodigorecurso()+" ya existe en el sistema");
        }
        em.persist(recurso);
        //super.create(cliente);
    }
    @TransactionAttribute(TransactionAttributeType.SUPPORTS)
    public Recurso findByIdentificacion( int Codigorecurso){
        Query  q = em.createNamedQuery("Recurso.findByCodigorecurso");
        q.setParameter("codigorecurso", Codigorecurso);
        try{
           return ((Recurso)q.getSingleResult());
        }catch(NoResultException nre){
            return null;
        }
     
    }
    
    public Recurso modificarCliente(Recurso cte){
        if (em.contains(cte)){
            System.out.println("Cliente " + cte.getCodigorecurso() + " SI existe en el contexto de persistencia!" );
        }else{
            System.out.println("Cliente " + cte.getCodigorecurso() + " NO existe en el contexto de persistencia!" );
        }
        System.out.println("Nombre :" + cte.getMarca());
        return cte = em.merge(cte);
        
    }
     @TransactionAttribute(TransactionAttributeType.SUPPORTS)
    public Recurso findById(long clienteId) {
        Query  q = em.createNamedQuery("Recurso.findById");
        q.setParameter("codigorecurso", clienteId);
        try{
           return ((Recurso)q.getSingleResult());
        }catch(NoResultException nre){
            return null;
        }       
    }
     
       @TransactionAttribute(TransactionAttributeType.SUPPORTS)
    public Recurso findByCodigorecurso(int codigorecurso) {
        Query  q = em.createNamedQuery("Recurso.findByCodigorecurso");
        q.setParameter("codigorecurso", codigorecurso);
        try{
           return ((Recurso)q.getSingleResult());
        }catch(NoResultException nre){
            return null;
        }       
    }

              @TransactionAttribute(TransactionAttributeType.SUPPORTS)
    public Recurso findByEstado(String estado, int codigorecurso) {
        Query  q = em.createNamedQuery("Recurso.findByActivo");
        q.setParameter("estado", estado);
        q.setParameter("codigorecurso", codigorecurso);
        try{
           return ((Recurso)q.getSingleResult());
        }catch(NoResultException nre){
            return null;
        }       
    }
    
    
      
}
